/*
 * @Author: chuangshishen abc@163.com
 * @Date: 2023-06-26 14:56:26
 * @LastEditors: chuangshishen abc@163.com
 * @LastEditTime: 2023-06-29 22:07:50
 * @FilePath: \vscodeFile\vue\my-graduate-project-vue\src\request.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import axios from 'axios'
import {getToken} from '@/util/token/tokenUtil'
import {ElMessage} from 'element-plus'
import routers from '@/router/index'


// 创建axios实例
const request = axios.create({
    // 这里可以放一下公用属性等。
    baseURL: process.env.VUE_APP_BASE_API,
    withCredentials: false, // 跨域请求时是否需要访问凭证
    timeout: 10 * 1000, // 请求超时时间
})

// 请求拦截器
request.interceptors.request.use((config) => {

    if (getToken('token')) {
        config.headers['token'] = getToken('token'); //携带token
        config.headers['Content-type'] = 'application/json';
    }
    return config;
}, (error) => {
    return Promise.reject(error)
})

request.interceptors.response.use((response) => {
    //返回码以自己的为定，如果没有安装elementui就换成自己的提示
    let {code, msg} = response.data
    if (code != 200 && code) {
        //如果响应状态码不正常，弹出提示，并处理
        switch (code) {
            case 401:
                ElMessage({message: msg || '请重新登录!', type: 'error'})
                routers.push('/login')
                break;
            default:
                console.log("错误内容",response)
                ElMessage({message: msg || '未知错误!', type: 'error'})
                break;
        }
    } else {
        //如果返回提示不是ok，那么弹出提示
        if (msg != 'OK') {
            ElMessage({message: msg || '操作成功!', type: 'success'})
        }
    }
    if (response.data) {
        //如果有就返回data（axios）
        return response.data;
    } else return response

}, (error) => {
    return Promise.reject(error)
})

export default request;//记得暴露出去
